<!DOCTYPE html>
<html lang="zh-CN"><head><title>帮助</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<body>
<center>
<table width=780 border=0 cellpadding=3 cellspacing=0>
<tr><td style='line-height:150%;font-size:16px;text-indent: 20px'>
<p><a href="#" onclick="window.history.back()">返回</a></p>

<p align=center><b>第九章 日食原理</b></p>

<p><b>一、月影轴、本影、伪本影、半影、日食类型</b></p>
<p>月亮遮住了太阳光，使地球在的人们看不见太阳或只看到太阳的一部分，便形成了日食。在任意时刻，月亮的影子总在存在的，当地球进入月亮影子区域，才能看到日食现象。</p>
<center><img src="img/a012.gif"></center>
<p>当角度满足一定条件时才能发生日食。即月亮应在地球和太阳之间才可能发生日食。即日月合朔时刻（或此刻附近）才可能发生日食。如果日月合朔时，月亮位置太“高”或太“低”，影子落在地球的上方（北极之上）或下方（南极之下），地球上看不到日食。</p>
<p>当距离满足一定条件时才能发生全食。设地球的赤道半径为1，那么月亮的影子长度约为58.57。地球带着月球围绕着遥远的太阳公转，公转的轨道是个椭圆，所以月亮月有时离太阳近此，有时候远一些，所以影子长度约为58.57±1.67%，这个值与地月距离60.34很接近。月球绕地运动轨道是个偏心率较大的椭圆，地月距60.34±5.5%，因此地月距离可能小于影子长度，形成日食。</p>
<p><b>二、日食的周期性</b></p>


<p><b>三、空间直线与地球的交点</b></p>
<p>地球的形状可近似为旋转椭球，月影轴或月影锥的母线可以使用一条直线来描述。某时刻月影轴与地球的交点就是该时刻日食的中心点。影锥的各条母线与地球的交点构成影子在地球上的轮廓线。</p>
<center><img src="img/a013.gif"></center>
<p>利用直线的参数方程求解比较容易</p>

<center><img src="img/a009.gif"></center>
<p>以下示例程序计算直线与地球的交点，直线经过(x1,y1,z1)和(x2,y2,z2)两点，e为极赤径比，r为赤半径：<br>
function lineEll(x1,y1,z1, x2,y2,z2, e,r){ //求空间两点连线与地球的交点(靠近点x1的交点)<br>
&nbsp;  var dx=x2-x1, dy=y2-y1, dz=z2-z1, e2=e*e, A,B,C,D,R,t, p=new Object();<br>
&nbsp;  A = dx*dx + dy*dy + dz*dz/e2;<br>
&nbsp;  B = x1*dx + y1*dy + z1*dz/e2;<br>
&nbsp;  C = x1*x1 + y1*y1 + z1*z1/e2 - r*r;<br>
&nbsp;  p.D = B*B-A*C; if(p.D&lt;0) return p; //判别式小于0无解<br>
&nbsp;  D = sqrt(p.D); if(B&lt;0) D = -D;     //只求靠近x1的交点<br>
&nbsp;  t = (-B+D)/A;<br>
&nbsp;  p.x=x1+dx*t, p.y=y1+dy*t, p.z=z1+dz*t;<br>
&nbsp;  R = sqrt(dx*dx + dy*dy + dz*dz);<br>
&nbsp;  p.R1 = R*abs(t), p.R2 = R*abs(t-1);   //单位是千米<br>
&nbsp;  return p;<br>}
</p>
<p>交点坐标(x,y,z)求出后，交点的经度<font color=red>α = atan2(y,x)</font>，地理经度<font color=red> L = α - g</font>，地心纬度φ'为<font color=red>tanφ' = z / sqrt(x*x+y*y)</font>。地心纬度φ'与地理纬度φ的关系为：<font color=red>tanφ' = (b/a)<sup>2</sup>tanφ</font>，式中b/a是极半径比赤道半径。显然地心纬度小于地理纬度，在南北极和赤道上二者相等。</p>
<p>最后，地理经度应限制在-180°到+180°,地理纬度应限制在-90°到90°。西方著作中，地理经度往往是向西为正，那么有L = g - α</p>

<p><b>四、日食计算所用的坐标系</b></p>
<p>并没有硬性规定要用哪种类型的坐标系。一般的说，精确的日食计算中，常常用到直角坐标系。</p>

<p><b>（一）坐标变换</b><br>

　球面转直角坐标llr2xyz()：<br>
function llr2xyz(JW){<br>
&nbsp; var r=new Array(),J=JW[0],W=JW[1],R=JW[2];<br>
&nbsp;  r[0]=R*cos(W)*cos(J);<br>
&nbsp;  r[1]=R*cos(W)*sin(J);<br>
&nbsp;  r[2]=R*sin(W);<br>
&nbsp;  return r;<br>
}<br>

　直角转球面坐标xyz2llr()<br>
function xyz2llr(xyz){<br>
&nbsp; var r=new Array(), x=xyz[0],y=xyz[1],z=xyz[2];<br>
&nbsp; r[2] = sqrt(x*x+y*y+z*z);<br>
&nbsp; r[1] = asin(z/r[2]);<br>
&nbsp; r[0] = rad2mrad( atan2(y,x) );<br>
&nbsp; return r;<br>
}<br>

　球面坐标旋转函数llrConv()：<br>
function llrConv(A,E){<br>
&nbsp; var B=new Array(),J=A[0],W=A[1];<br>
&nbsp; B[0]=rad2mrad( atan2(sin(J)*cos(E) - tan(W)*sin(E), cos(J)) );<br>
&nbsp; B[1]=asin ( cos(E)*sin(W) + sin(E)*cos(W)*sin(J)  );<br>
&nbsp; B[2]=A[2];<br>
&nbsp; return B;<br>
}<br>

　说明：转换函数中调用rad2mrad()函数的作用是将角度转换到0到2PI<br>
　用法：B = llrConv(A,E)<br>
　功能：由A道坐标转到B道坐标，E为A道与B道的夹角。<br>
　A与B的起算点为A与B的交点，交点有升交点和降交点之分，起算点由用户任选，但应注意：<font color=red>在A道上沿经度测量方向走，经过起算点时，如果纬度增加，则表示起算点为升交点，这时E取正，反之为降点E取负。</font><br>
　例1：A为黄道坐标，转换后B为赤道坐标，如果经度起算点为春风点，那么沿A道(即黄道)，经过春风点时，黄纬是增加的，所以E取正，E是黄赤交角。<br>
　例2：A为赤道坐标，转换后B为黄道坐标，如果经度起算点为春风点，那么沿A道(即赤道)，经过春风点时，赤纬是增加的，所以E取负，E是黄赤交角。
</p>

<p><b>（二）贝塞尔坐标系及其变换</b></p>
<p><b>贝塞尔坐标系的定义：</b></p>
<p>z轴经过地心且平行于月影轴，往太阳那个方向为正。垂直于月影轴且经过地心的平面为基面。基面与赤道面的交线为x轴，xyz三轴构成右手坐标系。如果规定x轴正方向的赤经比z轴赤经多90度而不是-90度，这样y轴总是在北半球。</p>
<center><img src="img/a003.gif"></center>
<p>设z轴上某一点记坐B向量，写为直角坐标形式记作B[0,1,2]，jd时刻太阳赤道坐标为S[0,1,2]，月亮赤道坐标为M[0,1,2]，存在关系式B = S - M。应注意，这个关系式是一个矢量运算关系。当S、M为球面坐标时，请先将它们转为直角坐标，然后再运算。最后得到的B还可以转为球面坐标。因此，在球面坐标系中，z轴向量的赤道坐标表示：<font color=red>B = xyz2llr( llr2xyz(S) - llr2xyz(M) )</font>。实际上，B的方向十分接近太阳，有中心线日食发生期间，B与S的角度差不到10角秒。</p>

<p><b>贝塞尔坐标变换三要素：</b></p>
<p>有了以下三个参数，就可以在贝塞尔坐标、赤道坐标、地理坐标之间进行坐标变换。<br>1、贝赤交角ζ<br>2、升交点赤经(A点的赤经,起算点赤经)υ<br>3、格林尼治恒星时GST（本文简写为g）</p>
<p>当z轴向量B求出后，<b>贝赤交角</b>立即得到：</b><font color=red>ζ= 90-B[1]</font>，同时得到<b>A点的赤经(起算点赤经)：</b><font color=red>υ = 90+B[0]</font>。如果天体赤经要转换为以格林尼治子午圈起算的经度，则应将天体赤经减去格林尼治恒星时。格林尼治恒星时是一个角度量，它指格林尼治子午圈相对春风点的赤经(角度)。</p>


<p><b>已知天体赤道坐标P[]求其贝塞尔坐标：</b><br>
　(1)先把P经度转为A点起算的经度<font color=red>P[0] = P[0]-υ</font><br>
　(2)然后旋转<font color=red>P = llrConv(P,-ζ)</font>。<br>
　(3)因为在赤道上沿经度测量方向走，经过起算点A为降交点，所以这里ζ取负。通常，天体的贝塞尔坐标以直角坐标形式表达，所以还应计算<font color=red>P = llr2xyz(P)</font>。<br>
　例：已知月亮赤道坐标，求它的贝塞尔坐标。按以上三步骤即可。
</p>
<p><b>已知天体贝塞尔坐标P[]求基赤道坐标：</b><br>
　(1)P = xyz2llr(P)。<br>
　(2)P = llrConv(P,ζ)<br>
　(3)P[0] = P[0]+υ<br>
</p>
<p><b>用直角坐标进行贝、赤坐标变换</b></p>
<center><img src="img/a008.gif"></center>
<p>xyz是贝塞尔直角坐标系，XYZ是A点（贝赤交线上）起算的赤道直角坐标系。x轴与X轴重合，y轴向量(0,P,Q),z轴向量(0,-Q,P)，其中<font color=red>P = cosζ，Q = sinζ</font></p>
<table border=1>
<tr><td>赤道(A点起算)转贝塞尔</td><td>反变换则为(解方程组得)</td><td>分点转A点</td><td>A点转分点</td></tr>
<tr><td><font color=red>x = (X,Y,Z)·(1, 0,0) = X<br>y = (X,Y,Z)·(0, P,Q) = PY + QZ<br>z = (X,Y,Z)·(0,-Q,P) =-QY + PZ</font></td>
<td><font color=red>X = x<br>Y = Py - Qz<br>Z = Qy + Pz</font></td>
<td>X = X'cosυ + Y'sinυ<br>Y =-X'sinυ + Y'cosυ<br>Z = Z'</td>
<td>X'= Xcosυ - Ysinυ<br>Y'= Xsinυ + Ycosυ<br>Z'= Z</td>
</tr></table>


<p><b>地理坐标与贝塞尔坐标的转换：</b></p>
<p>我们在一个实际问题中求解。贝塞尔坐标中的点P(x,y,z)落在地球表面，z轴赤经赤纬是(υ,90-ζ)，格林尼治恒星时为g，地球赤道半径为a与极半径为b，若z未知，试求z的值。</p>
<img src="img/a007.gif">

<p><b>五、贝塞尔坐标的其它问题</b></p>
<p><b>1、求贝圆的短半径：</b></p>
<p>从贝塞尔基面的定义知，贝塞尔基面与椭球形地球的交线为椭圆，下文称贝圆。贝圆的长半径在x轴，长度为地球赤道半径a。短半径在y轴，如何求其大小呢？我们引入下图，这是地球的一个剖面图，贝塞尔坐标的y轴落在剖面上，OD正是贝圆的半短径b<sub>2</sub>，今设赤道半径为a，南北极半径为b。</p>
<img src="img/a005.gif">
<p>依上图建立椭圆方程 (x/a)<sup>2</sup>+(y/b)<sup>2</sup>=1，把x = -r*cosζ，y = r*sinζ代入得：<br>
　<font color=red>b<sub>2</sub> = r = b/sqrt(1-c*cos<sup>2</sup>ζ)，式中c = 1-b<sup>2</sup>/a<sup>2</sup>=0.00669438</font><br>
　ζ约等于“90-太阳赤纬”，即cosζ≈sinδ≈sinε*sinλ(其中ε为黄赤交角，λ为太阳黄经，δ为太阳赤纬)，且c*cos<sup>2</sup>ζ是个小量，因此上式可改写为：<br>
　<font color=red>b<sub>2</sub> = b*(1+c*sin<sup>2</sup>δ/2) =  b(1+0.0005296sin<sup>2</sup>λ)，其中地球偏率f=1/298.25642，b = 1-f，ε=84381.448角秒</font><br>
　当影轴刚好扫过地球边缘，为了判断有无中心线，<font color=red>b<sub>2</sub>通常它的最大可能值0.9972即可，</font>不必取均值，其实南极大陆平均海拨也有2千米左右。
</p>


<p><b>2、贝赤交线与贝黄交线的夹角</b></p>
<p>应用三垂线定理易证得自转轴总是在yz平面。由于太阳距我们很远，月球则要近得多，所以月球的移动对月影轴方向的影响是轻微的，月影轴的方向主要有太阳决定，基本与太阳相同，因此，如果太阳赤纬为负时，上图中y应画在北极左边。这就是说随着太阳运转，赤纬变化，北极在y轴上左右移动。</p>
<p>由于太阳黄纬小于2角秒且太阳视差小于10角秒，所以基面基本垂直于黄道面，当月影轴经过地球，基面与黄轴的夹角不超过10角秒。虽然，实际计算不推荐看成垂直，但建立这样一种概念有利于坐标变换。<b>贝黄交角：</b>约为90度。</p>

<p>下图则给出贝塞尔坐标、黄道、赤道、基面等的示意图：</p>

<center><img src="img/a004.gif"></center>
<p>图中∠BOA可按以下方法得到：由黄赤变换公式sinδ = sinβ cosε + cosβ sinε sinλ，A点赤纬是δ=0，B点黄经λ=υ，代入得tanβ = -tanε sinλ = -tanε sin(υ)。贝圆几乎垂直于黄道，所以A的黄纬β近似为∠BOA，则有<font color=red>tan∠BOA = -tanε sinυ</font></p>

<p><b>3、半影与贝圆的交点(求两圆交点,贝圆用地球平均半径)</b></p>
<center><img src="img/a010.gif"></center>
<p><b>4、半影与贝圆的交点(求两圆交点,贝圆看作椭圆)</b></p>
<p>方法与求角圆与圆的交点基本相同，但要多做一次重复计算。</p>
<p><b>5、半影与贝圆的交点(精确求法)</b></p>
<p><b>6、半影与贝圆的切点计算</b></p>
<center><img src="img/a011.gif"></center>

<p><b>六、在贝塞尔坐标系中求解地球表面某点的速度：</b></p>
<center><img src="img/a006.gif"></center>





<p><b>求某一地标(含海拔)的贝塞尔坐标</b></p>

<p><b>求影轴上某点对应的本影和半影半径</b></p>

<p><b>影子中心相对于观测点的速度</b></p>

<p><b>求某时刻的中心点</b></p>

<p><b>地心到直线的距离</b></p>
<center><img src="img/a015.gif"></center>
<p><b>距离改正</b></p>
<p>在贝塞尔坐标中，用两点法插值求地月距离(线性插值)，会产生一定的误差，建议进行二次函数修正。如图，影足由O运动到A用时T日，角速度为ω</p>
<center><img src="img/a016.gif"></center>
<p>R取地月平均值，以地球赤道半径为单位，即R=385000/6378=60.36，ω为日月黄经差的平均速度0.2128/日，则有f = 1.366(T<sup>2</sup>-t<sup>2</sup>)，t是以中点O起算的。如果t从B点起算，B运动开A用时T，则<font color=red>f = 1.366t(T-t)</font></p>


<p><b>日出日没食甚线的绘图方法</b></p>
<p>计算的点数是有限的，所以画出的日出日没食甚线不会刚好经过南北界线的头尾端点，以下算法解决上问题。</p>
<center><img src="img/a014.gif"></center>
<p>红线是半影直径，它垂直于影子的相对速度方向（影子相对交点上的观测者的速度，它与地球自转有关）。影子速度比贝塞尔平面上地球自转速度大许多，所以红线实际基本垂直于影速方向，倾斜不多。随着影子的移动，红线与贝圆的连续的交点构成日出没食甚线。</p>
<p>上图中的连接图：当北界不存在时，q1连续写点造成q3不存在，因此连线前构造一个q3，即在q3线头写入q1的最后一点；当北界存在时，q1线尾与q3线头分别补上北界的线头和线尾，产生的效果有两个，其一确保q1和q3不为空线，其二使线头连接到北界的端点。q2与q4处理的方法相同。</p>
<p><b>绘图方法：</b>只要北界存在，不论q1和q3是否存在，q1线尾强制接北界头，q3线头强制接北界尾；如果不存在，q3必不存在，则强制补一个与q1连续的坐标生成一个q3。南界的处理方法类推。最后q1、q2线头连接，q3、q4线尾连接。<br>
&nbsp;&nbsp;1、q1、q2、q3、q4分别存储四条食甚线，q1、q3为食甚北线，q2、q4为食甚南线。北线写指针A指向q1或q3，南线写指针B指向q2或q4，初始状态A=q1，B=q2<br>
&nbsp;&nbsp;2、写点过程中，当时间已越过最大食时刻， 如果q1不存在则A移到q3，如果q2不存在则B移到q4。<br>
&nbsp;&nbsp;3、写点过程中，如有北线有断线（无解），则把A移到q3；如果南线断线，则B移到q4。<br>
&nbsp;&nbsp;4、四线段q1、q2、q3、q4全部写完之后：(1)如果无北界线q3必为空，在q3增补一个q1的末坐标，使q1和q3两线连续；如果有日食北界q1和q3均可能为空，q1末坐标加一个北界头坐标，q3首坐标加一个北界尾坐标。这样q1和q3构成完整的北食甚线。(2)q2、q4做同样处理，使用q2和q4变成完整的南食甚线<br>
&nbsp;&nbsp;5、南、北食甚线的线头和线尾分别，即q1和q2线头连接，q3和q4线尾连接。
</p>

</td></tr>
</table>
</center>
</body></html>
